<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<!--

        Json的序列化和反序列化：

        从对象变成Json对象叫做序列化：
        JSON.stringify(对象)

        从Json对象变成对象叫做反序列化：
        JSON.parse(Json对象)

 -------------------------------------------------------

        解构赋值：
        运行按照一定模式，从数组和对象中提取值，对变量进行赋值，称为解构。

        格式————>用相似的结构进行赋值
        例如：
        数组的:
        let array = [1,2,3]
        let [a,b,c] = array  结果就是a=1，b=2，c=3
        对象的：
        let obj = {a:1,b:2,C:3}
        let {a,b,c} = obj 结果就是a=1，b=2，c=3

        主要用法：模块加载中，将需要的经常使用的方法解构赋值，这样使性能更优

------------------------------------------------------

        拓展运算符：
        ...自定义命名，这样就表示剩余的

-->
<body>
    <script>
        let obj1 = {
            data : 20,
            text : "hahah",
            id : "1221455"
        };
        let json = JSON.stringify(obj1);
        console.log(json);
        let obj2 = JSON.parse(json);
        console.log(obj2);
    </script>

    <script>
        let arr = [1, 2, 3];
        let [a, b, c] = arr;
        console.log(`a=${a}`);
        console.log(`b=${b}`);
        console.log(`c=${c}`);

        let {data: x, text: y, id: z} = obj1;
        console.log(`x=${x}`);
        console.log(`y=${y}`);
        console.log(`z=${z}`);
        //或者使用他们命名相同
        function fn(content){
            console.log(content);
        }
        let obj3 = {
            btn : fn,
            name : "什么"
        };
        let {btn : btn} = obj3;
        //如果命名相同其简写是{btn} = obj3
        btn(234);
    </script>

    <script>
        let array = [1,3,5,7,9];
        let newarray = [...array];
        console.log(newarray);
    </script>
</body>
</html>